package com.goldcn.common;

import net.sf.json.JSONObject;
import org.apache.commons.lang.CharEncoding;
import org.apache.commons.lang.math.NumberUtils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;

/**
 * Created by NIK on 2016/9/20.
 */
public class DataUtils {
    /**
     * 获取map的值，为空值则返回默认值
     * @param map map
     * @param k key
     * @param def   默认值
     * @return map的value 或者默认值
     */
    public static String getMapVal (Map<String, String> map, String k, String def){
        return CommonUtils.isNotEmpty(String.valueOf(map.get(k))) ? String.valueOf(map.get(k)) : def;
    }

    /**
     * object 转数字
     * @param i object （string）
     * @return number
     */
    public static int toInt(Object i){
        return Integer.parseInt(CommonUtils.trim(i.toString()));
    }

    /**
     * Obj 转String
     * @param i object
     * @return string
     */
    public static String toStr(Object i){
        return String.valueOf(i);
    }

    /**
     * URL文字转码
     * @param s %形式
     * @return  文字形式
     */
    public static String decode(String s){
        try {
            return URLDecoder.decode(s, CharEncoding.UTF_8);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return s;
    }

    /**
     * String转timemillis
     * string 格式 2010-01-11T16:00:00.000Z
     */
    public static Long strToTimelillis(String s){
        StringBuffer sb = new StringBuffer(s.replace("T", " "));
        sb.delete(sb.lastIndexOf("."), sb.length());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Long dft = System.currentTimeMillis();
        try {
            return sdf.parse(sb.toString()).getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dft;
    }

    /**
     * 判断json 是否含有有效的值
     * @param j
     * @param k
     * @return 有效则返回true
     */
    public static boolean jsonHasVal(JSONObject j, String k){
        if(j.containsKey(k)){
            if(null != j.get(k)){
                if(CommonUtils.isNotEmpty(j.getString(k))){
                    if(NumberUtils.isNumber(j.getString(k))){
                        return true;
                    }
                }
            }
        }
        return false;
    }

    /**
     * 判断json 是否含有有效的值
     * @param j
     * @param k
     * @return 有效则返回true
     */
    public static String getJsonVal(JSONObject j, String k, String d){
        if(j.containsKey(k)){
            if(null != j.get(k)){
                if(CommonUtils.isNotEmpty(j.getString(k))){
                    return j.getString(k);
                }
            }
        }
        return d;
    }
}
